package com.mycode.builder06.resolve;

// 待钩子的抽象建造者
public abstract class HookActorBuilder {

    protected Actor actor = new Actor();

    public abstract void buildType();
    public abstract void buildSex();
    public abstract void buildFace();
    public abstract void buildCostume();
    public abstract void buildHairstyle();

    // 钩子方法

    /**
     * 通过引用钩子方法，可以在 控制类 中对复杂产品的构建进行精细控制，不仅指定方法执行顺序，还可以控制是否需要执行某个方法
     * @return
     */
    public boolean isBareheaded() {
        return false;
    }

    // 工厂方法，返回一个完整的游戏角色对象
    public Actor createActor() {
        return actor;
    }
}
